/**
 * 内置模板配置
 * 提供常用文档模板库，包含各种应用场景的预设模板
 */

import { 
  BuiltInTemplateConfig, 
  TemplateCategory, 
  TemplateLabelType,
  DocumentTemplate
} from '../../types/template'
import { ContentType } from '../../types/document'

/**
 * 内置模板列表
 */
export const BUILT_IN_TEMPLATES: BuiltInTemplateConfig[] = [
  // 新闻类模板
  {
    id: 'news-breaking',
    name: '突发新闻稿',
    description: '用于突发事件的新闻报道模板',
    category: TemplateCategory.NEWS,
    type: TemplateLabelType.FORMAL,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# 突发新闻标题

**时间**: {发布时间}
**地点**: {事件地点}
**来源**: {新闻来源}

## 事件概要

{事件简要描述，包含时间、地点、人物、事件经过}

## 详细报道

### 现场情况
{现场详细情况描述}

### 相关方回应
{当事人、政府、专家等的回应}

### 影响分析
{事件可能产生的影响和后续发展}

## 后续跟进
{后续报道计划和关注重点}

---
*本稿件最后更新时间: {更新时间}*`,
    metadata: {
      version: '1.0',
      estimatedLength: 800,
      difficulty: 'medium',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['新闻', '突发', '报道', '时效性']
  },
  
  {
    id: 'news-interview',
    name: '人物专访',
    description: '人物访谈和专访类文章模板',
    category: TemplateCategory.NEWS,
    type: TemplateLabelType.STRUCTURED,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# {被访者姓名}专访：{访谈主题}

> {一句话概括被访者的身份和本次访谈的核心价值}

**访谈时间**: {访谈日期}
**访谈地点**: {访谈地点}
**访谈者**: {记者姓名}

## 人物简介

{被访者的背景介绍，包括职业、经历、成就等}

## 核心观点

### 关于{话题一}
**记者**: {问题}
**{被访者姓名}**: {回答}

### 关于{话题二}
**记者**: {问题}
**{被访者姓名}**: {回答}

### 关于{话题三}
**记者**: {问题}
**{被访者姓名}**: {回答}

## 深度对话

{深入的讨论内容，展现被访者的思考深度}

## 未来展望

{被访者对未来的看法和计划}

---
**记者手记**: {记者的观察和感受}`,
    metadata: {
      version: '1.0',
      estimatedLength: 1200,
      difficulty: 'medium',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['访谈', '人物', '深度', '对话']
  },

  // 报告类模板
  {
    id: 'report-monthly',
    name: '月度工作报告',
    description: '标准的月度工作总结和计划报告模板',
    category: TemplateCategory.REPORT,
    type: TemplateLabelType.STRUCTURED,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# {月份}月工作报告

**报告期间**: {开始日期} - {结束日期}
**报告人**: {姓名}
**部门**: {部门名称}

## 一、工作概述

{本月工作整体情况概述}

## 二、主要完成工作

### 2.1 重点项目进展
1. **项目名称1**
   - 完成情况: {完成度}%
   - 主要成果: {具体成果}
   - 遇到问题: {问题描述}

2. **项目名称2**
   - 完成情况: {完成度}%
   - 主要成果: {具体成果}
   - 遇到问题: {问题描述}

### 2.2 日常工作统计
- 会议参与: {次数}次
- 文档输出: {数量}份
- 培训学习: {小时}小时

## 三、数据分析

| 指标项目 | 目标值 | 实际值 | 完成率 | 备注 |
|---------|--------|--------|--------|------|
| {指标1} | {目标} | {实际} | {百分比} | {说明} |
| {指标2} | {目标} | {实际} | {百分比} | {说明} |

## 四、问题与挑战

1. **问题描述1**
   - 影响: {具体影响}
   - 原因分析: {原因}
   - 解决方案: {方案}

## 五、下月计划

### 5.1 重点工作安排
1. {工作项目1} - 预期完成时间: {日期}
2. {工作项目2} - 预期完成时间: {日期}

### 5.2 目标设定
- {目标1}: {具体指标}
- {目标2}: {具体指标}

## 六、需要支持

{需要上级或同事提供的支持和资源}

---
*报告提交时间: {提交日期}*`,
    metadata: {
      version: '1.0',
      estimatedLength: 1200,
      difficulty: 'easy',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['报告', '工作总结', '月度', '结构化']
  },

  {
    id: 'report-project',
    name: '项目总结报告',
    description: '项目完成后的总结报告模板',
    category: TemplateCategory.REPORT,
    type: TemplateLabelType.FORMAL,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# {项目名称}总结报告

**项目周期**: {开始日期} - {结束日期}
**项目负责人**: {负责人姓名}
**项目团队**: {团队成员}
**报告日期**: {报告日期}

## 项目概况

### 项目背景
{项目发起的背景和原因}

### 项目目标
{项目要达成的具体目标}

### 项目范围
{项目包含的工作内容和边界}

## 执行情况

### 时间进度
- 计划开始时间: {计划开始}
- 实际开始时间: {实际开始}
- 计划完成时间: {计划完成}
- 实际完成时间: {实际完成}
- 进度偏差: {偏差分析}

### 质量情况
{项目交付物的质量评估}

### 成本控制
- 预算总额: {预算金额}
- 实际支出: {实际金额}
- 成本偏差: {偏差分析}

## 主要成果

1. **成果一**: {具体描述}
2. **成果二**: {具体描述}
3. **成果三**: {具体描述}

## 问题与解决

### 遇到的主要问题
1. {问题描述}
   - 解决方案: {解决过程}
   - 结果: {解决结果}

### 风险管理
{风险识别、评估和应对措施}

## 经验总结

### 成功经验
{值得推广的做法和经验}

### 改进建议
{未来类似项目的改进建议}

## 后续工作

{项目结束后的后续工作安排}

---
*项目团队签名确认*`,
    metadata: {
      version: '1.0',
      estimatedLength: 1500,
      difficulty: 'medium',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['项目', '总结', '正式', '管理']
  },

  // 博客类模板
  {
    id: 'blog-tech-tutorial',
    name: '技术教程博客',
    description: '技术教程和经验分享的博客文章模板',
    category: TemplateCategory.BLOG,
    type: TemplateLabelType.TECHNICAL,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# {教程标题}

> {一句话概括本教程的核心内容和价值}

## 前言

在{具体场景}中，我们经常会遇到{具体问题}。本文将详细介绍如何{解决方案概述}，帮助你{预期收获}。

**本文适合人群**: {目标读者}
**预计阅读时间**: {阅读时间}分钟
**前置知识**: {需要的基础知识}

## 准备工作

在开始之前，请确保你已经：

- [ ] {准备事项1}
- [ ] {准备事项2}
- [ ] {准备事项3}

## 步骤详解

### 步骤1: {步骤标题}

{步骤详细说明}

\`\`\`{语言}
{代码示例}
\`\`\`

**注意事项**: {重要提醒}

### 步骤2: {步骤标题}

{步骤详细说明}

\`\`\`{语言}
{代码示例}
\`\`\`

### 步骤3: {步骤标题}

{步骤详细说明}

## 常见问题

**Q: {常见问题1}**
A: {解答}

**Q: {常见问题2}**  
A: {解答}

## 进阶技巧

{高级用法和优化技巧}

## 总结

通过本教程，我们学习了：
1. {学习要点1}
2. {学习要点2}
3. {学习要点3}

{总结感悟和后续学习建议}

## 参考资料

- [{资源名称1}]({链接})
- [{资源名称2}]({链接})

---
**关于作者**: {作者介绍}
**发布时间**: {发布日期}
**标签**: #{标签1} #{标签2} #{标签3}`,
    metadata: {
      version: '1.0',
      estimatedLength: 1500,
      difficulty: 'medium',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['博客', '技术', '教程', '分享']
  },

  {
    id: 'blog-personal',
    name: '个人随笔',
    description: '个人感悟和生活分享的博客模板',
    category: TemplateCategory.BLOG,
    type: TemplateLabelType.CASUAL,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# {文章标题}

{开头的感悟或引子，可以是一个场景、一句话或一个感受}

## {小标题一}

{具体的感悟或经历描述}

{可以添加一些生活的细节，让读者更容易产生共鸣}

## {小标题二}

{继续深入的思考或另一个角度的观察}

> {引用一句话或者自己的感悟}

## {小标题三}

{最后的总结或者升华}

{可以是对未来的展望，或者对读者的祝愿}

---
*{署名和时间}*
*写于 {地点}*`,
    metadata: {
      version: '1.0',
      estimatedLength: 600,
      difficulty: 'easy',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['个人', '随笔', '生活', '感悟']
  },

  // 会议类模板
  {
    id: 'meeting-minutes',
    name: '会议纪要',
    description: '标准的会议记录和纪要模板',
    category: TemplateCategory.MEETING,
    type: TemplateLabelType.STRUCTURED,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# {会议主题}会议纪要

**会议时间**: {开始时间} - {结束时间}
**会议地点**: {会议地点/平台}
**会议主持**: {主持人姓名}
**记录人**: {记录人姓名}

## 参会人员

| 姓名 | 部门/职位 | 联系方式 | 备注 |
|------|-----------|----------|------|
| {姓名1} | {部门1} | {联系方式1} | {备注1} |
| {姓名2} | {部门2} | {联系方式2} | {备注2} |

**缺席人员**: {缺席人员及原因}

## 会议议程

1. {议程项目1} - 负责人: {姓名}
2. {议程项目2} - 负责人: {姓名}
3. {议程项目3} - 负责人: {姓名}

## 讨论内容

### 议题1: {议题标题}

**汇报人**: {汇报人姓名}
**主要内容**: 
{详细讨论内容}

**讨论要点**:
- {要点1}
- {要点2}
- {要点3}

### 议题2: {议题标题}

**汇报人**: {汇报人姓名}
**主要内容**: 
{详细讨论内容}

## 决议事项

| 序号 | 决议内容 | 负责人 | 完成时间 | 状态 |
|------|----------|--------|----------|------|
| 1 | {决议1} | {负责人1} | {时间1} | 待执行 |
| 2 | {决议2} | {负责人2} | {时间2} | 待执行 |

## 行动计划

### 短期任务（1周内）
- [ ] {任务1} - 负责人: {姓名} - 截止: {日期}
- [ ] {任务2} - 负责人: {姓名} - 截止: {日期}

### 中期任务（1个月内）
- [ ] {任务1} - 负责人: {姓名} - 截止: {日期}
- [ ] {任务2} - 负责人: {姓名} - 截止: {日期}

## 下次会议

**时间**: {下次会议时间}
**地点**: {下次会议地点}
**主要议题**: {下次会议主要讨论内容}

## 附件

- {附件1名称}
- {附件2名称}

---
*纪要整理完成时间: {整理时间}*
*纪要发送范围: {发送对象}*`,
    metadata: {
      version: '1.0',
      estimatedLength: 1000,
      difficulty: 'easy',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['会议', '纪要', '记录', '任务']
  },

  // 营销类模板
  {
    id: 'marketing-product',
    name: '产品推广文案',
    description: '产品宣传和推广的营销文案模板',
    category: TemplateCategory.MARKETING,
    type: TemplateLabelType.CREATIVE,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# {产品名称}：{吸引人的标题}

## 痛点洞察

你是否经常遇到{目标用户的痛点}？

{具体场景描述，让用户产生共鸣}

## 解决方案

**{产品名称}**，专为解决{核心问题}而生。

### 核心优势

🎯 **{优势1标题}**
{详细说明第一个核心优势}

⚡ **{优势2标题}**
{详细说明第二个核心优势}

🚀 **{优势3标题}**
{详细说明第三个核心优势}

## 产品特色

| 特色功能 | 传统方式 | {产品名称} |
|---------|---------|-----------|
| {功能1} | {旧方式痛点} | {新方式优势} |
| {功能2} | {旧方式痛点} | {新方式优势} |
| {功能3} | {旧方式痛点} | {新方式优势} |

## 用户反馈

> "{真实用户评价1}"
> —— {用户身份1}

> "{真实用户评价2}"
> —— {用户身份2}

## 立即体验

🎁 **限时优惠**: {优惠信息}
📞 **联系方式**: {联系信息}
🌐 **官方网站**: {网站链接}

现在就开始体验{产品名称}，{行动召唤}！

---
*更多详情请关注我们的官方渠道*`,
    metadata: {
      version: '1.0',
      estimatedLength: 800,
      difficulty: 'medium',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['营销', '产品', '推广', '文案']
  },

  // 商务类模板
  {
    id: 'business-proposal',
    name: '商务提案',
    description: '商务合作和项目提案的正式模板',
    category: TemplateCategory.BUSINESS,
    type: TemplateLabelType.FORMAL,
    contentType: ContentType.TEXT_DOCUMENT,
    content: `# {项目名称}商务提案

**提案方**: {公司名称}
**提案日期**: {提案日期}
**联系人**: {联系人姓名}
**联系方式**: {联系方式}

## 执行摘要

{项目的核心价值和预期成果概述}

## 项目背景

{项目发起的背景和市场机会分析}

## 解决方案

### 方案概述
{整体解决方案的描述}

### 实施方法
1. **阶段一**: {第一阶段的工作内容和目标}
2. **阶段二**: {第二阶段的工作内容和目标}
3. **阶段三**: {第三阶段的工作内容和目标}

### 技术优势
{技术实力和差异化优势}

## 项目团队

| 姓名 | 职位 | 经验 | 职责 |
|------|------|------|------|
| {姓名1} | {职位1} | {经验1} | {职责1} |
| {姓名2} | {职位2} | {经验2} | {职责2} |

## 时间计划

| 阶段 | 工作内容 | 开始时间 | 结束时间 | 交付物 |
|------|----------|----------|----------|---------|
| {阶段1} | {内容1} | {开始1} | {结束1} | {交付1} |
| {阶段2} | {内容2} | {开始2} | {结束2} | {交付2} |

## 投资预算

### 成本构成
| 项目 | 金额 | 占比 | 说明 |
|------|------|------|------|
| {项目1} | {金额1} | {占比1} | {说明1} |
| {项目2} | {金额2} | {占比2} | {说明2} |
| **总计** | **{总金额}** | **100%** | |

### 支付方式
{支付条款和方式说明}

## 风险评估

### 主要风险
1. **{风险1}**: {风险描述和应对措施}
2. **{风险2}**: {风险描述和应对措施}

## 预期收益

{项目成功后的预期收益和价值}

## 下一步行动

{提案后续的推进计划}

---
**提案有效期**: {有效期}
**联系方式**: {详细联系信息}`,
    metadata: {
      version: '1.0',
      estimatedLength: 1800,
      difficulty: 'hard',
      language: 'zh-CN',
      author: '融媒智创工坊'
    },
    tags: ['商务', '提案', '正式', '合作']
  }
]

/**
 * 将内置模板配置转换为DocumentTemplate对象
 */
export function convertToDocumentTemplate(config: BuiltInTemplateConfig): DocumentTemplate {
  const now = new Date()
  
  return {
    id: config.id,
    name: config.name,
    description: config.description,
    category: config.category,
    type: config.type,
    contentType: config.contentType,
    content: config.content,
    metadata: config.metadata,
    isBuiltIn: true,
    createdAt: now,
    updatedAt: now,
    usageCount: 0,
    tags: config.tags
  }
}

/**
 * 获取所有内置模板的DocumentTemplate对象
 */
export function getAllBuiltInTemplates(): DocumentTemplate[] {
  return BUILT_IN_TEMPLATES.map(convertToDocumentTemplate)
}

/**
 * 根据分类获取内置模板
 */
export function getBuiltInTemplatesByCategory(category: TemplateCategory): DocumentTemplate[] {
  return BUILT_IN_TEMPLATES
    .filter(template => template.category === category)
    .map(convertToDocumentTemplate)
}

/**
 * 根据类型获取内置模板
 */
export function getBuiltInTemplatesByType(type: TemplateLabelType): DocumentTemplate[] {
  return BUILT_IN_TEMPLATES
    .filter(template => template.type === type)
    .map(convertToDocumentTemplate)
}

/**
 * 根据ID获取内置模板
 */
export function getBuiltInTemplateById(id: string): DocumentTemplate | null {
  const config = BUILT_IN_TEMPLATES.find(template => template.id === id)
  return config ? convertToDocumentTemplate(config) : null
}

/**
 * 检查是否为内置模板ID
 */
export function isBuiltInTemplate(id: string): boolean {
  return BUILT_IN_TEMPLATES.some(template => template.id === id)
}

/**
 * 获取模板分类信息
 */
export function getTemplateCategoryInfo() {
  return [
    {
      category: TemplateCategory.NEWS,
      name: '新闻类',
      description: '新闻报道、访谈等新闻类文档模板',
      icon: '📰',
      count: BUILT_IN_TEMPLATES.filter(t => t.category === TemplateCategory.NEWS).length
    },
    {
      category: TemplateCategory.REPORT,
      name: '报告类',
      description: '工作报告、项目总结等正式报告模板',
      icon: '📊',
      count: BUILT_IN_TEMPLATES.filter(t => t.category === TemplateCategory.REPORT).length
    },
    {
      category: TemplateCategory.BLOG,
      name: '博客类',
      description: '技术博客、个人随笔等博客文章模板',
      icon: '✍️',
      count: BUILT_IN_TEMPLATES.filter(t => t.category === TemplateCategory.BLOG).length
    },
    {
      category: TemplateCategory.MEETING,
      name: '会议类',
      description: '会议纪要、讨论记录等会议文档模板',
      icon: '📝',
      count: BUILT_IN_TEMPLATES.filter(t => t.category === TemplateCategory.MEETING).length
    },
    {
      category: TemplateCategory.MARKETING,
      name: '营销类',
      description: '产品推广、营销文案等营销文档模板',
      icon: '📢',
      count: BUILT_IN_TEMPLATES.filter(t => t.category === TemplateCategory.MARKETING).length
    },
    {
      category: TemplateCategory.BUSINESS,
      name: '商务类',
      description: '商务提案、合作协议等正式商务文档模板',
      icon: '💼',
      count: BUILT_IN_TEMPLATES.filter(t => t.category === TemplateCategory.BUSINESS).length
    },
    {
      category: TemplateCategory.ACADEMIC,
      name: '学术类',
      description: '学术论文、研究报告等学术文档模板',
      icon: '🎓',
      count: 0 // 暂未添加学术类模板
    },
    {
      category: TemplateCategory.PERSONAL,
      name: '个人类',
      description: '个人日记、生活记录等个人文档模板',
      icon: '👤',
      count: 0 // 暂未添加个人类模板
    }
  ]
}

/**
 * 获取模板类型信息
 */
export function getTemplateTypeInfo() {
  return [
    {
      type: TemplateLabelType.FORMAL,
      name: '正式文档',
      description: '格式规范、语言正式的商务或学术文档',
      color: '#1890ff',
      count: BUILT_IN_TEMPLATES.filter(t => t.type === TemplateLabelType.FORMAL).length
    },
    {
      type: TemplateLabelType.STRUCTURED,
      name: '结构化文档',
      description: '结构清晰、条理分明的文档模板',
      color: '#52c41a',
      count: BUILT_IN_TEMPLATES.filter(t => t.type === TemplateLabelType.STRUCTURED).length
    },
    {
      type: TemplateLabelType.TECHNICAL,
      name: '技术文档',
      description: '技术教程、开发文档等技术性内容',
      color: '#faad14',
      count: BUILT_IN_TEMPLATES.filter(t => t.type === TemplateLabelType.TECHNICAL).length
    },
    {
      type: TemplateLabelType.CREATIVE,
      name: '创意文档',
      description: '创意性强、表达灵活的文档模板',
      color: '#eb2f96',
      count: BUILT_IN_TEMPLATES.filter(t => t.type === TemplateLabelType.CREATIVE).length
    },
    {
      type: TemplateLabelType.CASUAL,
      name: '休闲文档',
      description: '轻松随意、个人化的文档模板',
      color: '#13c2c2',
      count: BUILT_IN_TEMPLATES.filter(t => t.type === TemplateLabelType.CASUAL).length
    }
  ]
}